{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "36963289",
   "metadata": {},
   "source": [
    "### 源码在[此处](https://github.com/zllrunning/face-parsing.PyTorch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "7d33afd6",
   "metadata": {},
   "outputs": [],
   "source": [
    "FaceParsing_dir = '../Face-Parsing'\n",
    "import sys\n",
    "sys.path.append(FaceParsing_dir)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d95d08c6",
   "metadata": {},
   "outputs": [],
   "source": [
    "from model import BiSeNet\n",
    "\n",
    "import torch\n",
    "\n",
    "import os\n",
    "import os.path as osp\n",
    "import numpy as np\n",
    "from PIL import Image\n",
    "import torchvision.transforms as transforms\n",
    "import cv2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "0641cdd3",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "raw",
   "id": "e8e54656",
   "metadata": {},
   "source": [
    "!默认face_parsing的结果(Celeb-HQ)!      MT-Dataset face_parsing的结果\n",
    "         0 : 背景                                背景 \n",
    "         1 : 面部                                面部\n",
    "         2 : 鼻子                                左眉\n",
    "         3 : 眼镜                                右眉\n",
    "         4 : 左眼                                左眼\n",
    "         5 : 右眼                                右眼\n",
    "         6 : 左眉                                鼻子\n",
    "         7 : 右眉                                上唇\n",
    "         8 : 左耳                                嘴巴\n",
    "         9 : 右耳                                下唇\n",
    "         10: 嘴巴                                头发\n",
    "         11: 上唇                                左耳\n",
    "         12: 下唇                                右耳\n",
    "         13: 头发                                脖子\n",
    "         14: 头\n",
    "         15: 耳环\n",
    "         16: 项链\n",
    "         17: 脖子\n",
    "         18: 衣服"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "efffd78d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def vis_parsing_maps(im, parsing_anno, stride, save_im=False, save_path='vis_results/parsing_map_on_im.jpg', show=True):\n",
    "    # Colors for all 20 parts\n",
    "    part_colors = [[255, 0, 0], [255, 85, 0], [255, 170, 0],\n",
    "                   [255, 0, 85], [255, 0, 170],\n",
    "                   [0, 255, 0], [85, 255, 0], [170, 255, 0],\n",
    "                   [0, 255, 85], [0, 255, 170],\n",
    "                   [0, 0, 255], [85, 0, 255], [170, 0, 255],\n",
    "                   [0, 85, 255], [0, 170, 255],\n",
    "                   [255, 255, 0], [255, 255, 85], [255, 255, 170],\n",
    "                   [255, 0, 255], [255, 85, 255], [255, 170, 255],\n",
    "                   [0, 255, 255], [85, 255, 255], [170, 255, 255]]\n",
    "\n",
    "    im = np.array(im)\n",
    "    vis_im = im.copy().astype(np.uint8)\n",
    "    vis_parsing_anno = parsing_anno.copy().astype(np.uint8)\n",
    "    vis_parsing_anno = cv2.resize(vis_parsing_anno, None, fx=stride, fy=stride, interpolation=cv2.INTER_NEAREST)\n",
    "    vis_parsing_anno_color = np.zeros((vis_parsing_anno.shape[0], vis_parsing_anno.shape[1], 3)) + 255\n",
    "\n",
    "    num_of_class = np.max(vis_parsing_anno)\n",
    "\n",
    "    for pi in range(1, num_of_class + 1):\n",
    "        index = np.where(vis_parsing_anno == pi)\n",
    "        vis_parsing_anno_color[index[0], index[1], :] = part_colors[pi]\n",
    "\n",
    "    vis_parsing_anno_color = vis_parsing_anno_color.astype(np.uint8)\n",
    "    # print(vis_parsing_anno_color.shape, vis_im.shape)\n",
    "    vis_im = cv2.addWeighted(cv2.cvtColor(vis_im, cv2.COLOR_RGB2BGR), 0.4, vis_parsing_anno_color, 0.6, 0)\n",
    "    \n",
    "    if show:\n",
    "        fig, axes = plt.subplots(1, 2, figsize=(4, 20))\n",
    "        ax1 = axes[0]\n",
    "        ax2 = axes[1]\n",
    "\n",
    "        ax1.imshow(vis_parsing_anno)\n",
    "        ax2.imshow(vis_im)\n",
    "        \n",
    "        ax1.axis('off')\n",
    "        ax2.axis('off')\n",
    "\n",
    "    # Save result or not\n",
    "    if save_im:\n",
    "        cv2.imwrite(save_path[:-4] +'anno.png', vis_parsing_anno)\n",
    "        cv2.imwrite(save_path, vis_im, [int(cv2.IMWRITE_JPEG_QUALITY), 100])   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "83630e6f",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate(respth='./res/test_res', dspth='./data', save_pth='model_final_diss.pth'):\n",
    "\n",
    "    if not os.path.exists(respth):\n",
    "        os.makedirs(respth)\n",
    "\n",
    "    n_classes = 19\n",
    "    net = BiSeNet(n_classes=n_classes)\n",
    "    net.cuda()\n",
    "    net.load_state_dict(torch.load(save_pth))\n",
    "    net.eval()\n",
    "\n",
    "    to_tensor = transforms.Compose([\n",
    "        transforms.ToTensor(),\n",
    "        transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)),\n",
    "    ])\n",
    "    with torch.no_grad():\n",
    "        for image_path in os.listdir(dspth):\n",
    "            img = Image.open(osp.join(dspth, image_path))\n",
    "            image = img.resize((256, 256), Image.BILINEAR)\n",
    "            img = to_tensor(image)\n",
    "            img = torch.unsqueeze(img, 0)\n",
    "            img = img.cuda()\n",
    "            out = net(img)[0]\n",
    "            parsing = out.squeeze(0).cpu().numpy().argmax(0)\n",
    "            # print(parsing)\n",
    "            unique_parsing = np.unique(parsing)\n",
    "            vis_parsing_maps(image, parsing, stride=1, save_im=False, save_path=osp.join(respth, image_path))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45286342",
   "metadata": {},
   "source": [
    "### 修改点1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "47e060b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 400x2000 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 测试的文件夹\n",
    "src_dir = './res/face_parsing'\n",
    "# 模型保存的目录\n",
    "saved_model_pth = '../saved/Face-Parsing/79999_iter.pth'\n",
    "evaluate(dspth=src_dir, save_pth=saved_model_pth)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ace9055f",
   "metadata": {},
   "source": [
    "### 如果是生成MT-Dataset，还需以下操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fe6ec4aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import glob\n",
    "import numpy as np\n",
    "from PIL import Image\n",
    "\n",
    "\n",
    "def parsing(origin_path, new_path):\n",
    "    seg = np.array(Image.open(origin_path))\n",
    "    new = np.zeros_like(seg)\n",
    "    new[seg == 0] = 0\n",
    "    new[seg == 1] = 1\n",
    "    new[seg == 2] = 6\n",
    "    new[seg == 3] = 0\n",
    "    new[seg == 4] = 4\n",
    "    new[seg == 5] = 5\n",
    "    new[seg == 6] = 2\n",
    "    new[seg == 7] = 3\n",
    "    new[seg == 8] = 11\n",
    "    new[seg == 9] = 12\n",
    "    new[seg == 10] = 8\n",
    "    new[seg == 11] = 7\n",
    "    new[seg == 12] = 9\n",
    "    new[seg == 13] = 10\n",
    "    new[seg == 14] = 14\n",
    "    new[seg == 15] = 0\n",
    "    new[seg == 16] = 0\n",
    "    new[seg == 17] = 13\n",
    "    new[seg == 18] = 0\n",
    "    img = Image.fromarray(new)\n",
    "    img.save(new_path)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "torch_1.13.1",
   "language": "python",
   "name": "torch_1.13.1"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
